/**
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. <br/>
 * 描述: TODO <br/>
 *
 * @author framework generator
 * @date 2022年12月09日
 * @version 2.0
 */
package com.icinfo.cloud.provider.punish.common.systemmessage.mapper;

import com.icinfo.cloud.common.core.page.BasePageRequest;
import com.icinfo.cloud.provider.punish.common.systemmessage.model.CaseSystemMessage;
import com.icinfo.cloud.provider.punish.common.systemmessage.vo.SystemMessageListInfoVo;
import com.icinfo.framework.mybatis.mapper.common.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 描述:  case_system_message 对应的Mapper接口.<br>
 *
 * @author framework generator
 * @date 2022年12月09日
 */
public interface CaseSystemMessageMapper extends Mapper<CaseSystemMessage> {
    /**
     * 查询消息提醒列表
     *
     * @param userId   用户id
     * @param deptCode 部门编码
     * @return java.util.List<com.icinfo.cloud.provider.punish.common.systemmessage.vo.SystemMessageListInfoVo>
     * @author yangsizhen
     * @date 2022/12/09
     */
    List<SystemMessageListInfoVo> getSystemMessageList(@Param("userId") String userId, @Param("deptCode") String deptCode);

    /**
     * 查询用户未读消息数量
     *
     * @param userId   用户id
     * @param deptCode 部门编码
     * @return java.lang.Integer
     * @author yangsizhen
     * @date 2022/12/09
     */
    Integer getNoReadMessageCount(@Param("userId") String userId, @Param("deptCode") String deptCode);

    /**
     * 根据用户id及部门编码将未读消息全部置位已读
     *
     * @param userId   用户id
     * @param deptCode 部门编码
     * @author yangsizhen
     * @date 2022/12/09
     */
    void updateSystemMessageAllRead(@Param("userId") String userId, @Param("deptCode") String deptCode);

    /**
     * 查询当前用户最新未读消息
     *
     * @author yangsizhen
     * @date 2022/12/12
     * @param userId   用户id
     * @param deptCode 部门编码
     * @return com.icinfo.cloud.provider.punish.common.systemmessage.vo.SystemMessageListInfoVo
     */
    SystemMessageListInfoVo getNoReadMessageFirstInfo(@Param("userId") String userId, @Param("deptCode") String deptCode);
}